package com.zhuguang.jack.aop.jdkProxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class MyTest {
	public static void main(String[] args) {
		/*
		 * public static Object newProxyInstance( ClassLoader loader, Class<?>[]
		 * interfaces, InvocationHandler h)
		 */
		People proxyObject = (People) Proxy.newProxyInstance(MyTest.class.getClassLoader(),
				new Class<?>[] { People.class }, new Advice(new Jack())); // 获取代理，People.class是接口，new Advice是对实现类new
																			// Jack()的增强，在吃饭之前之后要洗手。

		proxyObject.eat("chi");// proxyObject是在内存的代理对象，对象名字叫$Proxy数字。
		
		//proxyObject = com.zhuguang.jack.aop.jdkProxy.Jack@5e5792a0，里面的h = com.zhuguang.jack.aop.jdkProxy.Advice@26653222
		
		// $Proxy0/1 extends Proxy implements People，Proxy里面有一个属性InvocationHandler h;
		// proxyObject.eat("chi")调用的是h.invoke(Object proxy, Method method, Object[]
		// args)，
		// h.invoke()方法调到advice.invoke()，
	}
}
